package var;

// 自动类型转换的逆过程，将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符( )，但可能造成精度降低或溢出,格外要注意。
public class ForceConvert {
    public static void main(String[] args) {
        int i = (int)1.9;
        System.out.println(i);

        int j = 100;
        byte b1 = (byte)j;
        System.out.println(b1);

        // 1.当从大数据类型转换为小数据类型时,就需要强制转换

        // 2.强制转换符号只针对最近的操作数有效,往往会使用小括号提升优先级
        //int x = (int)10 * 3.5 + 6 * 1.5; // 错误
        int x = (int)(10 * 3.5 + 6 * 1.5); // 正确
        System.out.println(x);

        // 3.char类型可以保存 int 的常量值,但不能保存 int 的变量值,需要强制转换
        char c1 = 100;
        int m = 100;
        //char c2 = m;
        char c3 = (char)m;
        System.out.println(c3);

        // 4.byte和short,char类型在进行运算时，当作 int 类型处理



        //例
        short s = 12; // ok
        //s = s-9; // 错误，int -> short

        byte b = 10; // ok
        //b = b + 11; // 错误，int -> byte

        char c = 'a'; // ok
        int p = 16; // ok
        float d = .314F; // ok
        double result = c + p + d; // ok float -> double

        byte e = 16; // ok
        short f = 14; // ok
        //short t = e + f; // 错误 int -> short
    }
}
